package com.sdk.util;

import java.util.LinkedList;

/**
 * 使用LinkedList实现安全队列
 *
 */
public class SafeQueue<E> {
    private LinkedList<E> data = new LinkedList<>();

    public SafeQueue() {

    }

    public void add(E e) {
        synchronized (data) {
            data.add(e);
        }
    }

    public E get() {
        synchronized (data) {
            if (data.isEmpty()) {
                return null;
            }else{
                E e = data.getFirst();//获取队列头元素
                return e;
            }
        }
    }

    public void remove(){
        synchronized (data) {
            if(size() != 0){
                data.removeFirst();
            }
        }
    }

    public synchronized int size() {
        return data.size();
    }
}